package com.itheima.operator;  // 声明包名，用于组织Java类

// 定义一个公开的类 OperatorDemo5
public class OperatorDemo5 {
    // 定义main方法，是程序的入口点
    // public表示公开访问权限，static表示静态方法，可以直接通过类名调用
    // void表示无返回值，main是方法名，String[] args是参数列表（命令行参数）
    public static void main(String[] args) {
        // 目标：演示三元运算符的使用
        
        // 调用print方法，传入两个整数参数10和40
        print(10, 40);
        
        // 调用print方法的重载版本，传入一个整数参数59（成绩）
        // 方法重载：同一个类中，方法名相同但参数列表不同
        print(59);
        
        // 调用getMax方法获取三个数中的最大值，并将结果与字符串拼接后输出
        // 字符串拼接使用 + 运算符
        System.out.println("较大值：" + getMax(10, 20, 30));
        
        // 调用getMax2方法获取三个数中的最大值（使用嵌套三元运算符的方式）
        System.out.println("较大值：" + getMax2(10, 20, 30));
    }

    // 定义print方法，接收两个int类型参数a和b
    public static void print(int a, int b) {
        // 使用三元运算符获取a和b中的较大值并赋值给变量max
        // 三元运算符语法：条件表达式 ? 表达式1 : 表达式2
        // 如果条件表达式为true，返回表达式1的值；否则返回表达式2的值
        int max = a > b ? a : b;
        
        // 输出结果，将字符串与变量值拼接后打印到控制台
        System.out.println("较大值：" + max);
    }

    // 定义print方法的重载版本，接收一个int类型参数score
    public static void print(int score) {
        // 使用三元运算符判断成绩是否通过
        // 如果score >= 60为true，result = "通过"；否则result = "挂科"
        String result = score >= 60 ? "通过" : "挂科";
        
        // 输出判断结果
        System.out.println(result);
    }

    // 定义getMax方法，接收三个int类型参数，返回它们中的最大值
    public static int getMax(int a, int b, int c) {
        // 第一步：使用三元运算符比较a和b，获取较大值赋值给变量max
        int max = a > b ? a : b;
        
        // 第二步：使用三元运算符比较max和c，获取最终最大值
        max = max > c ? max : c;
        
        // 返回最大值
        return max;
    }

    // 定义getMax2方法，使用嵌套三元运算符获取三个数中的最大值
    public static int getMax2(int a, int b, int c) {
        // 三元运算符的嵌套使用
        // 外层：比较a和b
        // 当a > b为true时，执行内层第一个三元运算符：比较a和c
        // 当a > b为false时，执行内层第二个三元运算符：比较b和c
        int max = a > b ? (a > c ? a : c) : (b > c ? b : c);
        
        // 返回最大值
        return max;
    }
}
